package com.ydd.service.impl;




import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.ydd.constant.MessageConstant;
import com.ydd.dto.CatePageQueryDTO;
import com.ydd.dto.YddCateTDO;
import com.ydd.entity.YddArticle;
import com.ydd.entity.YddCate;
import com.ydd.mapper.ArticleMapper;
import com.ydd.mapper.CateMapper;
import com.ydd.result.Result;
import com.ydd.service.CateService;
import com.ydd.vo.PageCateVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;


@Service
public class CateServiceImpl implements CateService {

    @Autowired
    private CateMapper cateMapper;

    @Autowired
    private ArticleMapper articleMapper;
    /**新增标签
     *
     */
    @Override
    public Result save(YddCateTDO yddCateTDO) {

        //1,非空判断
        if (yddCateTDO.getCatename()==null){
            return Result.error(MessageConstant.UNKNOWN_ERROR);
        }
        //拷贝
        YddCate yddCate = new YddCate();
        BeanUtils.copyProperties(yddCateTDO,yddCate);
        //判断增加内容的名字是否在数据库已经存在
        List<YddCate> yddCates = cateMapper.getId(yddCateTDO.getId());
        for (YddCate cate : yddCates) {
            if (yddCateTDO.getCatename().equals(cate.getCatename())){
                return Result.success(MessageConstant.UNKNOWN_ERROR);
            }
        }
        cateMapper.addCate(yddCate);

        return null;
    }

    //分页
    @Override
    public Result catePageQuery(CatePageQueryDTO catePageQueryDTO) {

        if (catePageQueryDTO.getPage() == null) {
            catePageQueryDTO.setPage(1);
        }
        if (catePageQueryDTO.getLimit() == null){
            catePageQueryDTO.setLimit(10);
        }

        // 开始执行分页
        PageHelper.startPage(Integer.valueOf(catePageQueryDTO.getPage()), Integer.valueOf(catePageQueryDTO.getLimit()));

        // 条件查询
        Page<YddCate> pageCate = cateMapper.pageQuery(catePageQueryDTO);
        // 总条数及集合
        long total = pageCate.getTotal();

        PageCateVo PageCateVo  = new PageCateVo();
        // 总条数
        Integer count = pageCate.getPageSize();
        // 总页数
        Integer totalPages = count / Integer.valueOf(catePageQueryDTO.getPage());

        PageCateVo.setCount(count);

        PageCateVo.setPageSize(totalPages);
        // 每页数量
        PageCateVo.setPageSize(Integer.valueOf(catePageQueryDTO.getLimit()));
        // 当前页数
        PageCateVo.setCurrentPage(Integer.valueOf(catePageQueryDTO.getPage()));

        List<YddCate> yddUserList = pageCate.getResult();

        PageCateVo.setData(yddUserList);
        // 返回数据
        return Result.success(PageCateVo);
    }

    //删除分类
    @Override
    public Result  deleteById(Integer id) {
        //1，判断该分类是否存在内容
        List<YddArticle> article = articleMapper.cateId(id);
        if (article.size()!=0){
            return Result.success(MessageConstant.UNKNOWN_ERROR);
        }
        cateMapper.deleteById(id);
        return Result.success();
    }

    @Override
    public Result update(YddCateTDO yddCateTDO) {
        Integer cateId = yddCateTDO.getId();
        //判断id是否为空
        if (cateId==null){
            Result.success(MessageConstant.ID_NOT_FOUND);
        }
        YddCate yddCate = new YddCate();
        BeanUtils.copyProperties(yddCateTDO,yddCate);
        //判断修改内容是否在数据库已经存在
        List<YddCate> yddCates = cateMapper.getId(cateId);
        for (YddCate cate : yddCates) {
            if (yddCateTDO.getCatename().equals(cate.getCatename())){
                return Result.success(MessageConstant.UNKNOWN_ERROR);
            }
        }
        cateMapper.update(yddCate);
        return Result.success();
    }

    @Override
    public YddCate rowInfo(String id) {
        YddCate yddCate = cateMapper.rowInfo(id);
        return yddCate;
    }

    @Override
    public Result getAll() {
        List<YddCate> all = cateMapper.getAll();
        return Result.success(all);
    }


}
